package com.xusj.specialsymbol

/**
  * 特舒符号
  */
object SpecialSymbolTest {

  def main(args: Array[String]): Unit = {

    //(1) -> 返回二元组，常用于构造 Map
    println(1 -> "one")

    println(Map(1 -> "one", 2 -> "two", 3 -> "three"))

    //(2) <- 常用于for循环，用于遍历一个可迭代的对象
    for (i <- 0 until 5) println(i)
    for (i <- Map(1 -> "one", 2 -> "two")) println(i)
    for (i <- "abc") println(i)

    //(3) => 常用于构造匿名函数，左侧是输入参数，右侧是方法体
    val add = (x: Int, y: Int) => x + y
    println(add(1, 2))

    //(4) ::: 用于两个List的连接
    println(List(1, 2, 3) ::: List(4, 5))

    //(5) _ 有多种含义
    // 1. 通配符
    //import scala.math._
    // 2. 获取元组的指定位置元素

    val tup = 1 -> 2
    println(tup._1)
    println(tup._2)

    // 3. 可以在匿名函数中表示每个元素
    val lst = List(1, 2, 3, 4, 5)

    println(lst.filter(_ > 2))

    // 4. 模式匹配中表示不需要引用的名字 @@
    val tuple = (1, 2, 3)

    println(tuple)

    val (_, two, _) = tuple
    println(two)

    // 5. 表示可变（不定长）参数  @@
    println(sum(1 to 5: _*))



  }

  def sum(parms: Int*) = {
    var result = 0
    for (par <- parms) {
      result += par
    }
    result
  }
}
